package com.example.no1admin.mapper;

import com.example.no1admin.pojo.dto.order.OrderEditDTO;
import com.example.no1admin.pojo.entity.Order;
import com.example.no1admin.pojo.vo.order.OrderDetailVO;
import com.example.no1admin.pojo.vo.order.OrderListItemVO;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface OrderMapper {

    /**
     * 插入订单数据
     * @param order 订单数据
     * @return 受影响的行数，成功插入数据时，将返回1
     */
    int insert(Order order);

    /**
     * 根据订单id删除对应的订单数据
     * @param id 订单id
     * @return 受影响的行数，成功删除数据时，将返回1，如果id对应的数据不存在，则返回0
     */
    int deleteById(Long id);

    /**
     * 根据若干个订单id，批量删除订单数据
     * @param ids 期望删除的若干个订单数据的id
     * @return 受影响的行数，将返回成功删除的数据量
     */
    int deleteByIds(Long... ids);

    /**
     * 根据id修改订单数据
     * @param orderEditDTO 订单数据
     * @return 受影响的行数，当修改成功时，将返回1，如果无此id对应的数据，将返回0
     */
    int updateById(OrderEditDTO orderEditDTO);

    /**
     * 根据用户Id统计此用户Id对应的订单数据的数量
     * @param userId 用户Id
     * @return 此用户Id对应的订单数据的数量
     */
    int countByUserId(Long userId);

    /**
     * 根据订单id查询订单详情
     * @param id 订单id
     * @return 此订单id对应的订单数据
     */
    OrderDetailVO getById(Long id);
    /**
     *查询订单列表
     * @return 订单列表的集合
     */
    List<OrderListItemVO> list();
}
